package com.qersoft.service;

import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.qersoft.dao.ExamRecordDao;
import com.qersoft.entity.ExamRecord;
import org.springframework.stereotype.Service;

import java.math.BigDecimal;
import java.util.List;

@Service
public class ExamRecordServiceImpl extends ServiceImpl<ExamRecordDao, ExamRecord> implements ExamRecordService {

    private final ExamRecordDao examRecordDao;

    public ExamRecordServiceImpl(ExamRecordDao examRecordDao) {
        this.examRecordDao = examRecordDao;
    }

    @Override
    public boolean addExamRecord(ExamRecord examRecord) {
        // 使用 MyBatis-Plus 的 insert 方法添加考试记录
        return examRecordDao.insert(examRecord) > 0;
    }

    @Override
    public ExamRecord getExamRecordById(Long examRecordId) {
        // 使用 MyBatis-Plus 的 selectById 方法获取考试记录
        return examRecordDao.selectById(examRecordId);
    }

    @Override
    public boolean updateScore(Long examRecordId, BigDecimal score) {
        // 查找该考试记录
        ExamRecord examRecord = examRecordDao.selectById(examRecordId);
        if (examRecord != null) {
            // 更新分数
            examRecord.setScore(score);
            // 使用 MyBatis-Plus 的 updateById 方法更新考试记录
            return examRecordDao.updateById(examRecord) > 0;
        }
        return false;
    }

    @Override
    public List<ExamRecord> getExamRecordsByStudentId(Long studentId) {
        // 使用 MyBatis-Plus 的 QueryWrapper 查询条件
        QueryWrapper<ExamRecord> queryWrapper = new QueryWrapper<>();
        queryWrapper.eq("student_id", studentId);
        // 使用 MyBatis-Plus 的 selectList 方法查询指定学生的所有考试记录
        return examRecordDao.selectList(queryWrapper);
    }

    @Override
    public boolean deleteExamRecord(Long examRecordId) {
        // 使用 MyBatis-Plus 的 deleteById 方法删除考试记录
        return examRecordDao.deleteById(examRecordId) > 0;
    }

    @Override
    public String getStudentAnswerById(Long studentId,Long examRecordId) {
        return "";
    }

}
